const db = require("../db");

const bcrypt = require('bcryptjs')


exports.getUsers = (req, res) => {
    // res.ResData('获取用户数据')
    // 接收数据 get请求数据 如果是post请求 req.body
    const keyword = req.query.query;
    const page_size = req.query.pagesize; //每页显示条数
    var page_num = req.query.pagenum; //当前页码数
    // console.log(page_size)
    // console.log(page_num)

    if (page_size == '' || page_num == '') {
        res.ResData("参数错误")
    }
    // var sql = "select * from sp_manager,sp_role where sp_manage.role_id=sp_role.role_id limit ?,?"
    var sql = "SELECT * FROM sp_manager a LEFT JOIN sp_role b ON a.role_id= b.role_id "
    if (keyword) {
        sql += "where a.mg_name like '%" + keyword + "%' limit ?,?"
            // console.log(sql);
    } else {
        sql += "limit ?,?"
    }
    // console.log(keyword);
    var params = [(parseInt(page_num) - 1) * parseInt(page_size), parseInt(page_size)]
        // console.log(params);
    console.log(params)
    db.query(sql, params, (err, result) => {
        if (err) return res.ResData('查询失败')
            // res.ResData('获取用户列表成功', 200, result)
            // 计算总记录数 

        // console.log(err);
        var sqlTotal = "select count(*) as num from sp_manager "
        if (keyword) {
            sqlTotal += "where mg_name like '%" + keyword + "%'"
                // console.log(sqlTotal);
        }
        db.query(sqlTotal, (err, among) => {
            if (err) return res.ResData("fgdf")
            var total = among[0]['num']; //总记录数

            // res.ResData('获取用户列表成功', 200, total)
            if (page_num > Math.floor(total / page_size)) {
                // return res.ResData('已经超过最大页')
                page_num = Math.floor(total / page_size)
            }
            var retUsers = []
            for (idx in result) {
                var manager = result[idx];
                var role_name = manager.role_name;
                if (!manager.role_id) {
                    role_name = "超级管理员"
                }
                retUsers.push({
                    "id": manager.mg_id,
                    "username": manager.mg_name,
                    "mobile": manager.mg_mobile,
                    "email": manager.mg_email,
                    "create_time": manager.mg_time,
                    "mg_state": manager.mg_state == 1,
                    "role_name": role_name
                })
            }
            const data = {
                "totalpage": total,
                "pagenum": page_num,
                "users": retUsers,
            }
            res.ResData("获取用户列表成功", 200, data)
        })

    })

}

// 添加用户
exports.addUsers = (req, res) => {

        // res.ResData("添加用户")
        // 1获取数据
        // console.log(req.body)
        var mg_name = req.body.username

        var mg_pwd = bcrypt.hashSync(req.body.password);
        var mg_email = req.body.email;
        var mg_mobile = req.body.mobile;
        var mg_time = (Date.parse(new Date()) / 1000)

        // 2检查用户名是否存在
        var sql = 'select * from sp_manager where mg_name=?'
        db.query(sql, mg_name, (err, result) => {


            if (err) return res.ResData("添加失败！")
            if (result.length > 0)
                return res.ResData('用户名已存在！')

            // 3添加数据
            var sql = "insert into sp_manager(mg_name,mg_pwd,mg_time,mg_mobile,mg_email,mg_state) values(?,?,?,?,?,?)"

            db.query(sql, [mg_name, mg_pwd, mg_time, mg_mobile, mg_email, 0], (err, data) => {
                    if (err) return res.ResData(err);
                    res.ResData('添加用户成功', 200, {
                        "username": mg_name,
                        "mobile": mg_mobile,
                        "email": mg_email,
                        "create_time": mg_time

                    })
                })
                // 4返回结果
        })
    }
    // 修改用户状态
exports.changeState = (req, res) => {
    // res.ResData('修改用户状态')
    // console.log(req.params)
    // 1获取用户数据
    var id = req.params.uId;
    var mg_state = req.params.type;
    if (mg_state === 'true') mg_state = 1
    else mg_state = 0

    // 2更新状态
    var sql = "update sp_manager set mg_state=? where mg_id=?"
    db.query(sql, [mg_state, id], (err, result) => {

        if (err) return res.ResData("更新用户状态失败")
        res.ResData("更新用户状态成功！", 200);
    })
}

// 查询用户
exports.search = (req, res) => {
    // res.ResData('查询用户')
    // 1.接收参数 id
    var id = req.params.id
        // 2.查询用户信息
    var sql = 'select * from sp_manager where mg_id=?'
    db.query(sql, id, (err, result) => {
        if (err) return res.ResData('查询失败')
        if (result.length > 0) {
            res.ResData('查询成功', 200, {
                "id": result[0].mg_id,
                "username": result[0].mg_name,
                "role_id": result[0].role_id,
                "mobile": result[0].mg_mobile,
                "email": result[0].mg_email
            })
        } else {
            res.ResData('用户查询失败')
        }
    })

    // 3.返回结果
}

// 提交
exports.submit = (req, res) => {
    // res.ResData('编辑用户提交')
    // 1.接收数据
    var id = req.params.id;
    var mobile = req.body.mobile
    var email = req.body.email
        // 2.更新数据
    var sql = "update sp_manager set mg_mobile=?,mg_email=? where mg_id=?"
    db.query(sql, [mobile, email, id], (err, result) => {

        if (err) return res.ResData('更新用户信息失败')
            // console.log(result)
        if (result.affectedRows < 1) return res.ResData('更新用户信息失败')
        var sql = "select * from sp_manager where mg_id=? "
        db.query(sql, id, (err, resResult) => {
            // console.log(resResult[0])
            res.ResData('更新用户信息成功', 200, {
                "id": resResult[0].mg_id,
                "username": resResult[0].mg_name,
                "role_id": resResult[0].role_id,
                "mobile": resResult[0].mg_mobile,
                "email": resResult[0].mg_email
            })
        })
    })

}

// 删除用户
exports.delete = (req, res) => {
    // res.ResData("删除用户")
    var id = req.params.id
    console.log(id);
    var sql = "delete from sp_manager where mg_id=?"
    db.query(sql, [id], (err, result) => {

        if (err) return res.ResData(err)
        if (result.affectedRows != 1) return res.ResData("删除失败")
        res.ResData("删除成功", 200)
    })
}

// 分配用户角色
exports.updateRole = (req, res) => {
    var id = req.params.id
    var rid = req.body.rid
    var sql1 = "select * from sp_manager where mg_id=?"
    var sql = "update sp_manager set role_id=?  where mg_id=? "
    db.query(sql, [rid, id], (err, result) => {
        if (err) return res.ResData('设置角色失败')
        if (result.affectedRows != 1) return res.ResData('设置角色失败')
        db.query(sql1, id, (err, data) => {


            res.ResData('更新用户信息成功', 200, {
                "id": data[0].mg_id,
                "username": data[0].mg_name,
                "rid": data[0].role_id,
                "mobile": data[0].mg_mobile,
                "email": data[0].mg_email
            })
        })
    })
}